home *** CD-ROM | disk | FTP | other *** search
/ World of Amiga / World of Amiga.iso / archive / assembly / angint6.s.lha / intro4.s < prev    next >
Text File  |  1980-02-15  |  32KB  |  1,628 lines

  1. ;This is the 'Fireworks Intro' ! Coded by CORTO
  2. ;Only for Angels members !
  3.  
  4. ; A,  Jrun
  5. ; WI  filename  run  end
  6. ; Ltext:
  7. ; L*** for comments
  8.  
  9.  
  10. org $40000
  11. load $40000
  12.  
  13. run:
  14. movem.l d0-d7/a0-a6,-(a7)
  15. bsr.L save_all
  16. lea $50000,a0
  17. move #$87ff,d7
  18. run1:
  19. clr.l (a0)+
  20. dbra d7,run1
  21.  
  22. lea font,a0
  23. lea fonts,a1
  24. move #1727,d7
  25. run2:
  26. move (a0)+,(a1)+
  27. clr (a1)+
  28. dbra d7,run2
  29.  
  30. bsr.L makedet
  31. move #15,d6
  32. run3:
  33. bsr.L makecopper
  34. dbra d6,run3
  35. move #$100,coltab2+2
  36. lea $dff000,a6
  37. move #$3fff,$9a(a6)
  38. move #$c000,$9a(a6)
  39. move #$3fff,$96(a6)
  40. move #$83c0,$96(a6)
  41. move.L #copperlist,$80(a6)
  42. clr $88(a6)
  43. bsr.L init_music
  44. lea $dff000,a6
  45. bsr.L normal
  46.  
  47.  
  48. move.L #%111101111011100111101111,$63780+38
  49. move.L #%100001001010100011001001,$63780+64+38
  50. move.L #%100001001011100011001001,$63780+128+38
  51. move.l #%100001001010010011001001,$63780+192+38
  52. move.l #%111101111010010011001111,$63780+256+38
  53.  
  54. wait:
  55. cmpi.b #1,6(a6)
  56. bne.s wait
  57. tst.b 5(a6)
  58. bne.s wait
  59.  
  60.  
  61. bsr.L play
  62. lea $dff000,a6
  63. move.b delai,d0
  64. add.b d0,wait1
  65. tst.b wait1
  66. bne.s irq1
  67. bsr.L print
  68. irq1:bsr.L cycle
  69.  
  70.  
  71. lea det,a0
  72. lea bp1,a4
  73. bsr.L polaire
  74.  
  75. lea det+[50*nbdata],a0
  76. lea bp3,a4
  77. bsr.L polaire
  78.  
  79. lea det+[100*nbdata],a0
  80. lea bp4,a4
  81. bsr.L polaire
  82.  
  83.     addi.b #2,cpal2
  84. bne.s irq03
  85.     bsr.L makecopper
  86.  
  87. irq03:
  88. addi.b #$40,cpal
  89. bne.s irq3
  90.  
  91. tst colmap1+2
  92. beq.s irq01
  93. move colmap1+2,d0
  94. bsr.L noir
  95. move d0,colmap1+2
  96. irq01:
  97. tst colmap2+2
  98. beq.s irq2
  99. move colmap2+2,d0
  100. bsr.s noir
  101. move d0,colmap2+2
  102. move d0,colmap2+6
  103. irq2:
  104. tst colmap3+2
  105. beq.s irq3
  106. move colmap3+2,d0
  107. bsr.s noir
  108. move d0,colmap3+2
  109. move d0,colmap3+6
  110. move d0,colmap3+10
  111. move d0,colmap3+14
  112. irq3:
  113. lea $dff000,a6
  114.  
  115. ;move #$f00,$dff180
  116.  
  117. btst #6,$bfe001
  118. bne.L wait
  119. bsr.L end_music
  120. bsr.L restore_all
  121. movem.L (sp)+,d0-d7/a0-a6
  122. rts
  123. wait1:dc.b 0
  124. delai:dc.b $40
  125. delai2:dc.l $c9f00000
  126. even
  127. speedtable:dc.W $10f9,$20e9,$40c9,$8089
  128.  
  129. noir:
  130. move d0,d1
  131. move d0,d2
  132. move d0,d3
  133. and #$f00,d1
  134. tst d1
  135. beq.s noir1
  136. sub #$100,d1
  137. noir1:and #$f0,d2
  138. tst d2
  139. beq.s noir2
  140. sub #$10,d2
  141. noir2:and #$f,d3
  142. tst d3
  143. beq.s noir3
  144. subq #1,d3
  145. noir3:
  146. or d3,d1
  147. or d2,d1
  148. move d1,d0
  149. rts
  150.  
  151. cpal:dc.b 0
  152. cpal2:dc.b 0
  153.  
  154. clear:
  155. lea $dff000,a6
  156. move #$8400,$96(a6)
  157. clear1:
  158. btst #6,2(a6)
  159. bne.s clear1
  160. move #$400,$96(a6)
  161. move.L #$1000000,$40(a6)
  162. move #$14,$66(a6)
  163. move.L #bp1,$54(a6)
  164. move #[222*64]+22,$58(a6)
  165. rts
  166.  
  167. clear2:
  168. lea $dff000,a6
  169. move #$8400,$96(a6)
  170. clear5:
  171. btst #6,2(a6)
  172. bne.s clear5
  173. move #$400,$96(a6)
  174. move.L #$1000000,$40(a6)
  175. move #$14,$66(a6)
  176. move.L #bp3,$54(a6)
  177. move #[222*64]+22,$58(a6)
  178. rts
  179.  
  180. clear3:
  181. lea $dff000,a6
  182. move #$8400,$96(a6)
  183. clear6:
  184. btst #6,2(a6)
  185. bne.s clear6
  186. move #$400,$96(a6)
  187. move.L #$1000000,$40(a6)
  188. move #$14,$66(a6)
  189. move.L #bp4,$54(a6)
  190. move #[222*64]+22,$58(a6)
  191. rts
  192.  
  193.  
  194. mod=0
  195. arg=4
  196. vmod=8
  197. varg=12
  198. modx=16
  199. cx=20
  200. cy=22
  201. typ=24
  202. adr=26
  203. img=28
  204. amod=30
  205.  
  206. nbdata=34
  207.  
  208. polaire:
  209. lea si,a6    ;sinus
  210. lea cos,a5
  211. ;lea bp1,a4
  212. lea bp2,a2
  213. lea table_images,a3
  214. ;lea det,a0
  215. move #49,d7
  216. poloop1:
  217. tst typ(a0)
  218. bmi.L polend
  219. beq.s pol2
  220. move adr(a0),d1
  221. move img(a0),d0
  222. not d0
  223. and d0,(a4,d1.w)
  224. bra.s pol3
  225. pol2:
  226. move adr(a0),d1
  227. move img(a0),d0
  228. not d0
  229. and d0,(a2,d1.w)
  230. pol3:
  231. move.l arg(a0),d0
  232. add.l varg(a0),d0
  233. move.l d0,arg(a0)
  234. swap d0
  235. and #$7fe,d0
  236.  
  237. move.L vmod(a0),d1
  238. add.L amod(a0),d1
  239. move.L d1,vmod(a0)
  240.  
  241. move.l mod(a0),d1
  242. add.l vmod(a0),d1
  243. move.l d1,mod(a0)
  244.  
  245. swap d1
  246.  
  247. move (a6,d0.w),d2
  248. move (a5,d0.w),d3
  249. muls d1,d2
  250. muls d1,d3
  251. asr.L #8,d2
  252. asr.L #8,d3
  253. asr.l #2,d2
  254. asr.l #2,d3
  255.  
  256. addi cy(a0),d2
  257. bmi.s pas_aff
  258. cmpi #221,d2
  259. bpl.s pas_aff
  260. addi cx(a0),d3
  261. bmi.s pas_aff
  262. cmpi #351,d3
  263. bpl.s pas_aff
  264.  
  265. tst typ(a0)
  266. bne.s pols2    
  267. ;pret a exploser ?
  268. tst.L vmod(a0)
  269. bmi.L explose
  270.  
  271. pols2:
  272.  
  273. move d3,d4
  274. ;mulu #44
  275. lsl #6,d2
  276. lsr #3,d3
  277. and #$fffe,d3
  278. add d3,d2
  279. and #$f,d4
  280. add d4,d4
  281. move (a3,d4.w),d4
  282. tst typ(a0)
  283. beq.s pol1
  284. or d4,(a4,d2.w)
  285. move d4,img(a0)
  286. move d2,adr(a0)
  287. polend:addi.L #nbdata,a0
  288. dbra d7,poloop1
  289. rts
  290. pol1:or d4,(a2,d2.w)
  291. move d4,img(a0)
  292. move d2,adr(a0)
  293. addi.L #nbdata,a0
  294. dbra d7,poloop1
  295. rts
  296.  
  297. pas_aff:
  298. move #-1,typ(a0)
  299. bra.s polend
  300.  
  301. table_images:dc.W $8000,$4000,$2000,$1000,$800,$400,$200,$100
  302. dc.w $80,$40,$20,$10,8,4,2,1
  303.  
  304.  
  305. typstop:dc.L 0
  306. typcount:dc.B 0
  307. even
  308.  
  309. lancer:
  310. dc.l $6000000,$20000
  311. dc.L $40000,$800000,-$900
  312. dc.l $5d80000,-$20000
  313. dc.L $40000,$600000,-$b00
  314. dc.L $5f00000,-$30000
  315. dc.L $60000,$400000,-$1500
  316. dc.l $6000000,-$7000
  317. dc.L $50000,$480000,-$1300
  318. dc.l $6100000,$40000
  319. dc.l $40000,$500000,-$e00
  320. dc.L $6000000,$4000
  321. dc.L $40000,$400000,-$1100
  322. dc.L $5f80000,-$2000
  323. dc.L $48000,$600000,-$1800
  324. dc.L $6100000,$c000
  325. dc.l $55000,$500000,-$1000
  326. dc.l $6000000,$60000
  327. dc.l $50000,$680000,-$1400
  328. dc.L $5e00000,-$20000
  329. dc.L $60000,$3c0000,-$1700
  330. dc.l $5f40000,-$8000
  331. dc.L $30000,$300000,-$1900
  332. dc.L $6000000,0
  333. dc.l $50000,$40000,-$1500
  334. dc.l $6050000,$d000
  335. dc.L $50000,$50000,-$1100
  336. dc.L $5f00000,-$4000
  337. dc.L $50000,$400000,-$1800
  338. dc.L $6000000,$30000
  339. dc.L $40000,$200000,-$1600
  340. dc.L $6000000,-$14000
  341. dc.L $48000,$400000,-$1000
  342. dc.l $5f00000,-$40000
  343. dc.l $40000,$500000,-$e00
  344. dc.L $6000000,-$10000
  345. dc.L $50000,$500000,-$1200
  346. dc.l $6080000,$30000
  347. dc.L $3b000,$400000,-$d00
  348. dc.w $7777
  349.  
  350. lancerc:dc.L lancer+20
  351.  
  352.  
  353.     ;***  -1:ligne suivante
  354.     ;     -2:decaler toute la prochaine ligne pour centrer
  355.     ;     le texte
  356. text1:
  357. dc.b -1
  358. dc.b -1
  359. dc.b "        ANGELS        ",-1,-2    ;centre 'Present'
  360. DC.B "       PRESENT       ",-1
  361. dc.B -1,-1,-1
  362. dc.B "       BEAST II",-1
  363. DC.B -1
  364. DC.B " 100% 2 DISKS VERSION",0    ;0=fini
  365.  
  366. dc.b "                      "    ;22 chars. maxi
  367.  
  368.     ;*** dc.b 1,2,3,4 : change speed
  369.     ;dc.b $80: stop scrolltext
  370.  
  371. text:
  372. ;dc.B 1,"   This is slow      ",2," This is medium       ",3
  373. ;dc.b "This is normal         ",4,"Thiiiiis iiiiiiiis"
  374. ;dc.B " faaaaaaaaaaaaaaast !!!        ",3
  375.  
  376. dc.B 3,"    --- ANGELS ---  ",2,32,1,32    ;centre a 22 chars.
  377. dc.b $80,1,32,2,32,3
  378. dc.b "bring you another quality crack called..."
  379. dc.B "  Shadow of the Beast II",$80
  380. dc.B "  from Psygnosis "
  381. dc.B "!   This is the two-disks 100%"
  382. dc.B " version of this game !   "
  383. dc.b "To contact us, write to ... ",1
  384. dc.b "P.O. Box 10 - 4504 - Obercorn - LUXEMBURG ... "
  385. dc.B "P.O. Box 3 - 6040 - Jumet - BELGIUM ... "
  386. dc.b "P.O. Box 31 - 9910 - Mariakerke - BELGIUM ... "
  387. dc.B "P.O. Box 2568 - 4300 - Sandnes - NORWAY   "
  388. dc.b "or call our boards ... "
  389. dc.b "Amiga East: 804-499-2266 (World HQ) ... "
  390. dc.b "Insider BBS: +39-564-415-697 (Euro HQ) ... "
  391. dc.b "World Trade Center: +41-170-11323 (Swiss HQ) ... "
  392. dc.B "Skyfox BBS: +49-911-353-571 (German HQ) ... "
  393. dc.b "City limits: +44-704-501-09 (England HQ) ... "
  394. dc.b "The Dutch Pirate: +31-011-723-66 (Holland HQ) ... "
  395. dc.b "Escape zone: 704-254-6448 ... "
  396. dc.B "Digital Expression: 813-398-7393 ... "
  397. dc.b "Wreck House: 201-751-2175 ... "
  398. dc.b "Reign in blood: +49-202-406-0981 ... "
  399. dc.B "House of Insanity: 813-584-6089      "
  400. dc.b "That's all !  "
  401. dc.B " Greetings to all our",3
  402. dc.b " friends and contacts all over the world !           "
  403. dc.b "This was ",2,"the Fireworks Intro"
  404. dc.b " coded by CORTO   "
  405. dc.b $7f," ANGELS 1990                          ",3,0
  406. even
  407. textptr:dc.l text
  408.  
  409. normal:
  410. lea text1,a0
  411. move.l #bp0,d2
  412. normall1:
  413. move.L d2,d1
  414. normall2:clr.l d0
  415. move.b (a0)+,d0
  416. tst.B d0
  417. beq.L ret
  418. cmpi.B #-1,d0
  419. beq.s line1
  420. cmpi.b #-2,d0
  421. bne.s norm1
  422. move.l #$8fca8000,con1+2
  423. bra.s normall2
  424. norm1:
  425. sub.b #$20,d0
  426. ;lsl.b #2,d0
  427. mulu #72,d0
  428. addi.l #fonts,d0
  429. bsr.L letter
  430. addq.L #2,d1
  431. bra.s normall2
  432. line1:
  433. addi.l #16*64,d2
  434. move.l #$0fca0000,con1+2
  435. bra.s normall1
  436.  
  437. print:
  438. tst.b textstop
  439. bne.L ret
  440. clr.l d0
  441. move.l textptr,a0
  442. move.b (a0)+,d0
  443. tst.b d0
  444. beq.s fini
  445. move.l a0,textptr
  446. cmpi.b #$80,d0
  447. beq.L spechg1
  448. cmpi.B #$20,d0
  449. blo.s spechg
  450. sub.b #$20,d0
  451. mulu #36,d0
  452. addi.l #font,d0
  453. move.L d0,a0
  454. lea scroll+44,a1
  455. move (a0)+,[46*0](a1)
  456. move (a0)+,[46*1](a1)
  457. move (a0)+,[46*2](a1)
  458. move (a0)+,[46*3](a1)
  459. move (a0)+,[46*4](a1)
  460. move (a0)+,[46*5](a1)
  461. move (a0)+,[46*6](a1)
  462. move (a0)+,[46*7](a1)
  463. move (a0)+,[46*8](a1)
  464. move (a0)+,[46*9](a1)
  465. move (a0)+,[46*10](a1)
  466. move (a0)+,[46*11](a1)
  467. move (a0)+,[46*12](a1)
  468. move (a0)+,[46*13](a1)
  469. move (a0)+,[46*14](a1)
  470. move (a0)+,[46*15](a1)
  471. move (a0)+,[46*16](a1)
  472. move (a0)+,[46*17](a1)
  473. ret:rts
  474. ret1:subq.B #1,textstop
  475. rts
  476. fini:
  477. move.l #text,textptr
  478. bra.L print
  479. spechg:
  480. subq.b #1,d0
  481. lsl #1,d0
  482. lea speedtable,a0
  483. move (a0,d0.w),d0
  484. move.b d0,delai2
  485. lsr #8,d0
  486. move.b d0,delai
  487. clr.b wait1
  488. bra.L print
  489. spechg1:move.B #150,textstop
  490. rts
  491. textstop:dc.B 0
  492. even
  493.  
  494. letter:    ;d0=font,d1=bp
  495. move #$8400,$96(a6)
  496. letter1:btst #6,2(a6)
  497. bne.s letter1
  498. move #$400,$96(a6)
  499. move.l d0,$50(a6)
  500. move.l d1,$54(a6)
  501. move.l d1,$48(a6)
  502. move.l d0,$4c(a6)
  503. con1:move.l #$fca0000,$40(a6)
  504. move.l #$ffff0000,$44(a6)
  505. move.w #60,$66(a6)
  506. move #60,$60(a6)
  507. clr.l $62(a6)
  508. move.w #[18*64]+2,$58(a6)
  509. rts
  510.  
  511. cycle:
  512. tst.b textstop
  513. bne.L ret1
  514. move #$8400,$96(a6)
  515. cyc1:btst #6,$2(a6)
  516. bne.s cyc1
  517. move #$400,$96(a6)
  518. move.l #scroll-2,$54(a6)
  519. move.l #scroll,$50(a6)
  520. move.l delai2,$40(a6)
  521. move.l #$ffffffff,$44(a6)
  522. clr.l $64(a6)
  523. move.w #1048,$58(a6)
  524. rts
  525.  
  526. save_all:
  527. move.L 4,a6
  528. jsr -132(a6)
  529. move.b #%10000111,$bfd100
  530. move.l $6c,save_vecteur_irq
  531. move.w $dff01c,save_intena
  532. or.w #$c000,save_intena
  533. move.w $dff002,save_dmacon
  534. or.w #$8100,save_dmacon
  535. rts
  536. restore_all:
  537. move.l save_vecteur_irq,$6c
  538. move.w #$7fff,$dff09a
  539. move.w save_intena,$dff09a
  540. move.w #$7fff,$dff096
  541. move.w save_dmacon,$dff096
  542. move.l 4,a6
  543. lea name_glib,a1
  544. moveq #0,d0
  545. jsr -552(a6)
  546. move.l d0,a0
  547. move.l 38(a0),$dff080
  548. clr.w $dff088
  549. move.L 4,a6
  550. jsr -138(a6)
  551. rts
  552. save_intena:dc.w 0
  553. save_dmacon:dc.w 0
  554. save_vecteur_irq:dc.l 0
  555. name_glib:dc.b "graphics.library",0
  556. even
  557.  
  558. makedet:
  559. lea det,a0
  560. move #149,d7
  561. mdl1:
  562. clr.L (a0)+
  563. move.l #$6000000,(a0)+
  564. move.L #$40000,(a0)+
  565. move.l #$20000,(a0)+    ;varg
  566. move.L #$800000,(a0)+    ;maxmod (modx)
  567. move #176,(a0)+        ;cx
  568. move #221,(a0)+        ;cy
  569. move #-1,(a0)+        ;type    -1=fini
  570. clr (a0)+        ;adr
  571. clr (a0)+        ;img
  572. move.L #-$900,(a0)+    ;amod
  573.  
  574. dbra d7,mdl1
  575.  
  576. lea det,a0
  577. bsr.s makefusee
  578. lea det+[50*nbdata],a0
  579. bsr.s makefusee
  580. lea det+[100*nbdata],a0
  581. bsr.s makefusee
  582. rts
  583.  
  584. makefusee:
  585. move.L lancerc,a2
  586. clr.L (a0)+
  587. move.l (a2),(a0)+
  588. move.L 8(a2),(a0)+
  589. move.L 4(a2),(a0)+    ;varg
  590. move.L 12(a2),(a0)+    ;maxmod (modx)
  591. move #176,(a0)+        ;cx
  592. move #221,(a0)+        ;cy
  593. move.L a0,typstop
  594. move.B #150,typcount
  595. move #0,(a0)+        ;type    0=1e 1=eclats  2=arret
  596. clr (a0)+        ;adr
  597. clr (a0)+        ;img
  598. move.L 16(a2),(a0)+    ;amod
  599. addi.L #20,a2
  600. cmpi #$7777,(a2)
  601. bne.s mf1a
  602. lea lancer,a2
  603. mf1a:move.L a2,lancerc
  604. rts
  605.  
  606. explose:
  607. cmpi.L #bp1,a4
  608. bne.s exp1
  609. bsr.L clear
  610. bra.s exp2
  611. exp1:
  612. cmpi.L #bp4,a4
  613. beq.s exp01
  614. bsr.L clear2
  615. bra.s exp2
  616. exp01:bsr.L clear3
  617. exp2:
  618. move #49,d7
  619. move #$600,d4
  620. move.l #$40000,d5
  621. move.L a0,a1
  622. expl1:
  623. clr.l (a0)+
  624. move d4,(a0)+
  625. clr (a0)+
  626. move.L d5,(a0)+
  627. clr.L (a0)+
  628. move.L #$7fffffff,(a0)+
  629. move d3,(a0)+
  630. move d2,(a0)+
  631. move #1,(a0)+
  632. clr.L (a0)+
  633. clr.L (a0)+
  634. add d2,d5
  635. add d3,d5
  636. add d2,d5
  637. add $df0006,d5
  638. ;rol #4,d5
  639. andi.L #$3fc00,d5
  640. add d2,d4
  641. add d3,d4
  642. add d2,d4
  643. add $df0006,d4
  644. andi #$7fe,d4
  645. dbra d7,expl1
  646.  
  647. move.L a1,a0
  648. makedet1:
  649. move.L lancerc,a2
  650. clr.L (a0)+
  651. move.l (a2),(a0)+
  652. move.L 8(a2),(a0)+
  653. move.L 4(a2),(a0)+    ;varg
  654. move.L 12(a2),(a0)+    ;maxmod (modx)
  655. move #176,(a0)+        ;cx
  656. move #221,(a0)+        ;cy
  657. move.L a0,typstop
  658. move.B #150,typcount
  659. move #0,(a0)+        ;type    0=1e 1=eclats  2=arret
  660. clr (a0)+        ;adr
  661. clr (a0)+        ;img
  662. move.L 16(a2),(a0)+    ;amod
  663. addi.L #20,a2
  664. cmpi #$7777,(a2)
  665. bne.s md1a
  666. lea lancer,a2
  667. md1a:move.L a2,lancerc
  668. move.L coltabc,a2
  669. move (a2)+,d0
  670. cmpi #$7777,(a2)
  671. bne.s md1b
  672. lea coltab,a2
  673. md1b:move.L a2,coltabc
  674. cmpi.l #bp3,a4
  675. beq.s exp5
  676. cmpi.l #bp4,a4
  677. beq.s exp6
  678. move d0,colmap1+2
  679. rts
  680. exp5:move d0,colmap2+2
  681. move d0,colmap2+6
  682. rts
  683. exp6:move d0,colmap3+2
  684. move d0,colmap3+6
  685. move d0,colmap3+10
  686. move d0,colmap3+14
  687. rts
  688.  
  689. coltab:dc.W $fff,$ff0,$f,$f00,$f0
  690. dc.w $f80,$ea6,$aaf
  691. dc.w $ff,$f0f,$ff0
  692. dc.w $80f,$f80,$f08,$fff,$f
  693. dc.W $8f8,$d5d,$08f,$cfc,$fc8,$af0,$f0a
  694. dc.W $fff,$fa0,$46f,$88f,$f84,$9d9,$b8f
  695. dc.W $7777
  696. coltabc:dc.l coltab
  697.  
  698. lastloop:dc.w 14
  699. coltab2:dc.w -$11,0
  700. dc.w -$100,1    ;bleu
  701. dc.w -1,$10    ;vert
  702. dc.w 0,$100    ;jaune
  703. dc.w -$10,1    ;violet
  704. dc.w -$100,$10    ;bleu-vert
  705. dc.w $7777
  706. coltab2c:dc.l coltab2
  707. makecopper:
  708. lea cop1+6,a0
  709. lea cop2+6,a2
  710. move lastloop,d7
  711. mcl1:
  712. move.l coltab2c,a1
  713. move (a0),d0
  714. move (a1)+,d1
  715. move (a1)+,d2
  716. add d1,d0
  717. add d2,d0
  718. move d0,(a0)
  719. move d0,d1
  720. move d0,d2
  721. move d0,d3
  722. andi #$f00,d1
  723. andi #$f0,d2
  724. andi #$f,d3
  725. lsr #1,d1
  726. andi #$f00,d1
  727. lsr #1,d2
  728. andi #$f0,d2
  729. lsr #1,d3
  730. andi #$f,d3
  731. or d1,d3
  732. or d2,d3
  733. move d3,(a2)
  734. subq.L #8,a2
  735. addq.L #8,a0
  736. dbra d7,mcl1
  737. subq #1,lastloop
  738.  
  739. tst lastloop
  740. bmi.s mcl3
  741. rts
  742. mcl3:
  743. move #14,lastloop
  744. cmpi #$7777,(a1)
  745. bne.s mcl2
  746. lea coltab2,a1
  747. mcl2:
  748. move.l a1,coltab2c
  749. rts
  750.  
  751. copperlist:
  752. dc.L $8e2479,$9033c9,$920030,$9400d8
  753.  
  754. dc.l $1840ccc,$1860ccc,$18c0ccc,$18e0ccc
  755. dc.L $1940ccc,$1960ccc,$19c0ccc,$19e0ccc
  756.  
  757. dc.L $1a00fff,$1a20fff,$1a40fff,$1a60fff
  758. dc.L $1a80fff,$1aa0fff,$1ac0fff,$1ae0fff
  759. dc.L $1b00fff,$1b20fff,$1b40fff,$1b60fff
  760. dc.L $1b80fff,$1ba0fff,$1bc0fff,$1be0fff
  761.  
  762. dc.L $240ffffe
  763. dc.l $1080002,$1001200,$1820f00
  764. dc.l $e00005,$e20000
  765. cop1:
  766. dc.L $250ffffe,$1820fff
  767. dc.L $260ffffe,$1820fff
  768. dc.L $270ffffe,$1820fff
  769. dc.L $280ffffe,$1820fff
  770. dc.L $290ffffe,$1820fff
  771. dc.L $2a0ffffe,$1820fff
  772. dc.L $2b0ffffe,$1820fff
  773. dc.L $2c0ffffe,$1820fff
  774. dc.L $2d0ffffe,$1820fff
  775. dc.L $2e0ffffe,$1820fff
  776. dc.L $2f0ffffe,$1820fff
  777. dc.L $300ffffe,$1820fff
  778. dc.L $310ffffe,$1820fff
  779. dc.L $320ffffe,$1820fff
  780. dc.L $330ffffe,$1820fff
  781. dc.L $340ffffe,$1820fff
  782.  
  783.  
  784. dc.l $360ffffe,$1000200
  785. dc.l $1020000,$1040040,$1080014,$10a0014
  786. colmap1:dc.L $1820fff
  787. colmap2:dc.l $1880ff0,$18a0ff0
  788. colmap3:dc.L $190000f,$192000f,$198000f,$19a000f
  789.  
  790. copbpl1:dc.w $e0,6,$e2,0,$e4,6,$e6,$4800,$e8,6,$ea,$9000
  791. dc.W $ec,6,$ee,$d800
  792.  
  793. dc.L $f00005,$f20400
  794. dc.L $370ffffe,$1800002
  795. dc.L $380ffffe,$1800004
  796. dc.L $390ffffe,$1800007
  797. dc.L $3a0ffffe,$1800004
  798. dc.L $3b0ffffe,$1800002
  799. dc.L $3c0ffffe,$1800000
  800. dc.L $3d0ffffe,$1005200
  801.  
  802.  
  803. dc.L $ffdffffe,$ffffe
  804. dc.L $1b0ffffe,$1001200,$1820fff
  805. dc.L $1c0ffffe,$1800002,$1820eee
  806. dc.L $1d0ffffe,$1800004,$1820ddd
  807. dc.l $1e0ffffe,$1800007,$1820ccc
  808. dc.l $1f0ffffe,$1800004,$1820bbb
  809. dc.l $200ffffe,$1800002,$1000200
  810. dc.L $210ffffe,$1800000,$1820fff
  811. dc.l $108ffa6,$1001200
  812. dc.l $e00005,$e2033c
  813. dc.L $220ffffe,$1820fff
  814. dc.L $230ffffe,$1820fff
  815. dc.L $240ffffe,$1820fff
  816. dc.L $250ffffe,$1820fff
  817. dc.L $260ffffe,$1820fff
  818. dc.L $270ffffe,$1820fff
  819. dc.L $280ffffe,$1820fff
  820. dc.L $290ffffe,$1820fff
  821. dc.L $2A0ffffe,$1820fff
  822. dc.L $2b0ffffe,$1820fff
  823. dc.L $2c0ffffe,$1820fff
  824. dc.L $2d0ffffe,$1820fff
  825. dc.L $2e0ffffe,$1820fff
  826. dc.L $2f0ffffe,$1820fff
  827. dc.L $300ffffe,$1820fff
  828. cop2:dc.L $310ffffe,$1820fff
  829.  
  830. dc.l -2
  831.  
  832.  
  833. END_MUSIC:
  834. ;clr.w onoff
  835. clr.l $dff0a6
  836. clr.l $dff0b6
  837. clr.l $dff0c6
  838. clr.l $dff0d6
  839. move.w #$000f,$dff096
  840. rts
  841.  
  842. INIT_MUSIC:
  843. ;move.w #1,onoff
  844. lea MODULE(pc),a0
  845. lea 100(a0),a1
  846. lea    SEQpoint(pc),a5
  847. move.l a1,(a5)
  848. move.l a0,a1
  849. add.l 8(a0),a1
  850. lea    PATpoint(pc),a5
  851. move.l a1,(a5)
  852. move.l a0,a1
  853. add.l 16(a0),a1
  854. lea    FRQpoint(pc),a5
  855. move.l a1,(a5)
  856. move.l a0,a1
  857. add.l 24(a0),a1
  858. lea    VOLpoint(pc),a5
  859. move.l a1,(a5)
  860. move.l 4(a0),d0
  861. divu #13,d0
  862.  
  863. lea 40(a0),a1
  864. lea SOUNDINFO+4(pc),a2
  865. moveq #10-1,d1
  866. initloop:
  867. move.w (a1)+,(a2)+
  868. move.l (a1)+,(a2)+
  869. addq.w #4,a2
  870. dbf d1,initloop
  871. moveq #0,d2
  872. move.l a0,d1
  873. add.l 32(a0),d1
  874. lea    waveforms(pc),a5
  875. sub.l a5,d1
  876. lea SOUNDINFO(pc),a0
  877. move.l d1,(a0)+
  878. moveq #9-1,d3
  879. initloop1:
  880. move.w (a0),d2
  881. add.l d2,d1
  882. add.l d2,d1
  883. addq.w #6,a0
  884. move.l d1,(a0)+
  885. dbf d3,initloop1
  886.  
  887. move.l SEQpoint(pc),a0
  888. moveq #0,d2
  889. move.b 12(a0),d2        ;Get replay speed
  890. bne.s speedok
  891. move.b #3,d2            ;Set default speed
  892. speedok:
  893. lea    respcnt(pc),a5
  894. move.w d2,(a5)        ;Init repspeed counter
  895. lea    repspd(pc),a5
  896. move.w d2,(a5)
  897. INIT2:
  898. lea    audtemp(pc),a5
  899. clr.w (a5)
  900. move.w #$000f,$dff096        ;Disable audio DMA
  901. move.w #$0780,$dff09a        ;Disable audio IRQ
  902. moveq #0,d7
  903. mulu #13,d0
  904. moveq #4-1,d6            ;Number of soundchannels-1
  905. lea V1data(pc),a0        ;Point to 1st voice data area
  906. lea silent(pc),a1
  907. lea o4a0c8(pc),a2
  908. initloop2:
  909. move.l a1,10(a0)
  910. move.l a1,18(a0)
  911. clr.l 14(a0)
  912. clr.b 45(a0)
  913. clr.b 47(a0)
  914. clr.w 8(a0)
  915. clr.l 48(a0)
  916. move.b #$01,23(a0)
  917. move.b #$01,24(a0)
  918. clr.b 25(a0)
  919. clr.l 26(a0)
  920. clr.w 30(a0)
  921. moveq #$00,d3
  922. move.w (a2)+,d1
  923. move.w (a2)+,d3
  924. divu #$0003,d3
  925. move.b d3,32(a0)
  926. mulu #$0003,d3
  927. andi.l #$00ff,d3
  928. andi.l #$00ff,d1
  929. addi.l #$dff0a0,d1
  930. move.l d1,a6
  931. move.l #$0000,(a6)
  932. move.w #$0100,4(a6)
  933. move.w #$0000,6(a6)
  934. move.w #$0000,8(a6)
  935. move.l d1,60(a0)
  936. clr.w 64(a0)
  937. move.l SEQpoint(pc),(a0)
  938. move.l SEQpoint(pc),52(a0)
  939. add.l d0,52(a0)
  940. add.l d3,52(a0)
  941. add.l d7,(a0)
  942. add.l d3,(a0)
  943. move.w #$000d,6(a0)
  944. move.l (a0),a3
  945. move.b (a3),d1
  946. andi.l #$00ff,d1
  947. lsl.w #6,d1
  948. move.l PATpoint(pc),a4
  949. adda.w d1,a4
  950. move.l a4,34(a0)
  951. clr.l 38(a0)
  952. move.b #$01,33(a0)
  953. move.b #$02,42(a0)
  954. move.b 1(a3),44(a0)
  955. move.b 2(a3),22(a0)
  956. clr.b 43(a0)
  957. clr.b 45(a0)
  958. clr.w 56(a0)
  959. adda.w #$004a,a0    ;Point to next voice's data area
  960. dbf d6,initloop2
  961. rts
  962.  
  963. PLAY:
  964. lea pervol(pc),a6
  965. ;tst.w onoff
  966. ;bne.s music_on
  967. ;rts
  968. music_on:
  969. lea    respcnt(pc),a5
  970. subq.w #1,(a5)            ;Decrease replayspeed counter
  971. bne.s nonewnote
  972. move.w repspd(pc),(a5)        ;Restore replayspeed counter
  973. lea V1data(pc),a0        ;Point to voice1 data area
  974. bsr.L new_note
  975. lea V2data(pc),a0        ;Point to voice2 data area
  976. bsr.L new_note
  977. lea V3data(pc),a0        ;Point to voice3 data area
  978. bsr.L new_note
  979. lea V4data(pc),a0        ;Point to voice4 data area
  980. bsr.L new_note
  981.  
  982. nonewnote:
  983. lea    audtemp(pc),a5
  984. clr.w (a5)
  985. lea V1data(pc),a0
  986. bsr.L effects
  987. move.w d0,(a6)+
  988. move.w d1,(a6)+
  989. lea V2data(pc),a0
  990. bsr.L effects
  991. move.w d0,(a6)+
  992. move.w d1,(a6)+
  993. lea V3data(pc),a0
  994. bsr.L effects
  995. move.w d0,(a6)+
  996. move.w d1,(a6)+
  997. lea V4data(pc),a0
  998. bsr.L effects
  999. move.w d0,(a6)+
  1000. move.w d1,(a6)+
  1001. lea pervol(pc),a6
  1002. move.w audtemp(pc),d0
  1003. ori.w #$8000,d0            ;Set/clr bit = 1
  1004. move.w d0,-(a7)
  1005. moveq #0,d1
  1006. move.l start1(pc),d2        ;Get samplepointers
  1007. move.w offset1(pc),d1        ;Get offset
  1008. add.l d1,d2            ;Add offset
  1009. move.l start2(pc),d3
  1010. move.w offset2(pc),d1
  1011. add.l d1,d3
  1012. move.l start3(pc),d4
  1013. move.w offset3(pc),d1
  1014. add.l d1,d4
  1015. move.l start4(pc),d5
  1016. move.w offset4(pc),d1
  1017. add.l d1,d5
  1018. move.w ssize1(pc),d0        ;Get sound lengths
  1019. move.w ssize2(pc),d1
  1020. move.w ssize3(pc),d6
  1021. move.w ssize4(pc),d7
  1022. move.w (a7)+,$dff096        ;Enable audio DMA
  1023. chan1:
  1024. lea V1data(pc),a0
  1025. tst.w 72(a0)
  1026. beq.l chan2
  1027. subq.w #1,72(a0)
  1028. cmpi.w #1,72(a0)
  1029. bne.s chan2
  1030. clr.w 72(a0)
  1031. move.l d2,$dff0a0        ;Set soundstart
  1032. move.w d0,$dff0a4        ;Set soundlength
  1033. chan2:
  1034. lea V2data(pc),a0
  1035. tst.w 72(a0)
  1036. beq.s chan3
  1037. subq.w #1,72(a0)
  1038. cmpi.w #1,72(a0)
  1039. bne.s chan3
  1040. clr.w 72(a0)
  1041. move.l d3,$dff0b0
  1042. move.w d1,$dff0b4
  1043. chan3:
  1044. lea V3data(pc),a0
  1045. tst.w 72(a0)
  1046. beq.s chan4
  1047. subq.w #1,72(a0)
  1048. cmpi.w #1,72(a0)
  1049. bne.s chan4
  1050. clr.w 72(a0)
  1051. move.l d4,$dff0c0
  1052. move.w d6,$dff0c4
  1053. chan4:
  1054. lea V4data(pc),a0
  1055. tst.w 72(a0)
  1056. beq.s setpervol
  1057. subq.w #1,72(a0)
  1058. cmpi.w #1,72(a0)
  1059. bne.s setpervol
  1060. clr.w 72(a0)
  1061. move.l d5,$dff0d0
  1062. move.w d7,$dff0d4
  1063. setpervol:
  1064. lea $dff0a6,a5
  1065. move.w (a6)+,(a5)    ;Set period
  1066. move.w (a6)+,2(a5)    ;Set volume
  1067. move.w (a6)+,16(a5)
  1068. move.w (a6)+,18(a5)
  1069. move.w (a6)+,32(a5)
  1070. move.w (a6)+,34(a5)
  1071. move.w (a6)+,48(a5)
  1072. move.w (a6)+,50(a5)
  1073. rts
  1074.  
  1075. NEW_NOTE:
  1076. moveq #0,d5
  1077. move.l 34(a0),a1
  1078. adda.w 40(a0),a1
  1079. cmp.w #64,40(a0)
  1080. bne.s samepat
  1081. move.l (a0),a2
  1082. adda.w 6(a0),a2        ;Point to next sequence row
  1083. cmpa.l 52(a0),a2    ;Is it the end?
  1084. bne.s notend
  1085. move.w d5,6(a0)        ;yes!
  1086. move.l (a0),a2        ;Point to first sequence
  1087. notend:
  1088. moveq #0,d1
  1089. lea    spdtemp(pc),a5
  1090. addq.b #1,(a5)
  1091. cmpi.b #4,(a5)
  1092. bne.s nonewspd
  1093. move.b d5,(a5)
  1094. move.b -1(a1),d1    ;Get new replay speed
  1095. beq.s nonewspd
  1096. lea    respcnt(pc),a5
  1097. move.w d1,(a5)        ;store in counter
  1098. lea    repspd(pc),a5
  1099. move.w d1,(a5)
  1100. nonewspd:
  1101. move.b (a2),d1        ;Pattern to play
  1102. move.b 1(a2),44(a0)    ;Transpose value
  1103. move.b 2(a2),22(a0)    ;Soundtranspose value
  1104.  
  1105. move.w d5,40(a0)
  1106. lsl.w #6,d1
  1107. add.l PATpoint(pc),d1    ;Get pattern pointer
  1108. move.l d1,34(a0)
  1109. addi.w #$000d,6(a0)
  1110. move.l d1,a1
  1111. samepat:
  1112. move.b 1(a1),d1        ;Get info byte
  1113. move.b (a1)+,d0        ;Get note
  1114. bne.s ww1
  1115. andi.w #%11000000,d1
  1116. beq.s noport
  1117. bra.s ww11
  1118. ww1:
  1119. move.w d5,56(a0)
  1120. ww11:
  1121. move.b d5,47(a0)
  1122. move.b (a1),31(a0)
  1123.  
  1124.         ;31(a0) = PORTAMENTO/INSTR. info
  1125.             ;Bit 7 = portamento on
  1126.             ;Bit 6 = portamento off
  1127.             ;Bit 5-0 = instrument number
  1128.         ;47(a0) = portamento value
  1129.             ;Bit 7-5 = always zero
  1130.             ;Bit 4 = up/down
  1131.             ;Bit 3-0 = value
  1132. t_porton:
  1133. btst #7,d1
  1134. beq.s noport
  1135. move.b 2(a1),47(a0)    
  1136. noport:
  1137. andi.w #$007f,d0
  1138. beq.s nextnote
  1139. move.b d0,8(a0)
  1140. move.b (a1),9(a0)
  1141. move.b 32(a0),d2
  1142. moveq #0,d3
  1143. bset d2,d3
  1144. lea    audtemp(pc),a5
  1145. or.w d3,(a5)
  1146. move.w d3,$dff096
  1147. move.b (a1),d1
  1148. andi.w #$003f,d1    ;Max 64 instruments
  1149. add.b 22(a0),d1
  1150. move.l VOLpoint(pc),a2
  1151. lsl.w #6,d1
  1152. adda.w d1,a2
  1153. move.w d5,16(a0)
  1154. move.b (a2),23(a0)
  1155. move.b (a2)+,24(a0)
  1156. move.b (a2)+,d1
  1157. andi.w #$00ff,d1
  1158. move.b (a2)+,27(a0)
  1159. move.b #$40,46(a0)
  1160. move.b (a2)+,d0
  1161. move.b d0,28(a0)
  1162. move.b d0,29(a0)
  1163. move.b (a2)+,30(a0)
  1164. move.l a2,10(a0)
  1165. move.l FRQpoint(pc),a2
  1166. lsl.w #6,d1
  1167. adda.w d1,a2
  1168. move.l a2,18(a0)
  1169. move.w d5,50(a0)
  1170. move.b d5,26(a0)
  1171. move.b d5,25(a0)
  1172. nextnote:
  1173. addq.w #2,40(a0)
  1174. rts
  1175.  
  1176. EFFECTS:
  1177. moveq #0,d7
  1178. testsustain:
  1179. tst.b 26(a0)        ;Is sustain counter = 0
  1180. beq.s sustzero
  1181. subq.b #1,26(a0)    ;if no, decrease counter
  1182. bra.L VOLUfx
  1183. sustzero:        ;Next part of effect sequence
  1184. move.l 18(a0),a1    ;can be executed now.
  1185. adda.w 50(a0),a1
  1186. testeffects:
  1187. cmpi.b #$e1,(a1)    ;E1 = end of FREQseq sequence
  1188. beq.L VOLUfx
  1189. cmpi.b #$e0,(a1)    ;E0 = loop to other part of sequence
  1190. bne.s testnewsound
  1191. move.b 1(a1),d0        ;loop to start of sequence + 1(a1)
  1192. andi.w #$003f,d0
  1193. move.w d0,50(a0)
  1194. move.l 18(a0),a1
  1195. adda.w d0,a1
  1196. testnewsound:
  1197. cmpi.b #$e2,(a1)    ;E2 = set waveform
  1198. bne.s o49c64
  1199. moveq #0,d0
  1200. moveq #0,d1
  1201. move.b 32(a0),d1
  1202. bset d1,d0
  1203. lea    audtemp(pc),a5
  1204. or.w d0,(a5)
  1205. move.w d0,$dff096
  1206. move.b 1(a1),d0
  1207. andi.w #$00ff,d0
  1208. lea SOUNDINFO(pc),a4
  1209. add.w d0,d0
  1210. move.w d0,d1
  1211. add.w d1,d1
  1212. add.w d1,d1
  1213. add.w d1,d0
  1214. adda.w d0,a4
  1215. move.l 60(a0),a3
  1216. move.l (a4),d1
  1217. lea    waveforms(pc),a5
  1218. add.l a5,d1
  1219. move.l d1,(a3)
  1220. move.l d1,68(a0)
  1221. move.w 4(a4),4(a3)
  1222. move.l 6(a4),64(a0)
  1223. swap d1
  1224. move.w #$0003,72(a0)
  1225. tst.w d1
  1226. bne.s o49c52
  1227. move.w #$0002,72(a0)
  1228. o49c52:
  1229. clr.w 16(a0)
  1230. move.b #$01,23(a0)
  1231. addq.w #2,50(a0)
  1232. bra.L o49d02
  1233. o49c64:
  1234. cmpi.b #$e4,(a1)
  1235. bne.s testpatjmp
  1236. move.b 1(a1),d0
  1237. andi.w #$00ff,d0
  1238. lea SOUNDINFO(pc),a4
  1239. add.w d0,d0
  1240. move.w d0,d1
  1241. add.w d1,d1
  1242. add.w d1,d1
  1243. add.w d1,d0
  1244. adda.w d0,a4
  1245. move.l 60(a0),a3
  1246. move.l (a4),d1
  1247. lea    waveforms(pc),a5
  1248. add.l a5,d1
  1249. move.l d1,(a3)
  1250. move.l d1,68(a0)
  1251. move.w 4(a4),4(a3)
  1252. move.l 6(a4),64(a0)
  1253.  
  1254. swap d1
  1255. move.w #$0003,72(a0)
  1256. tst.w d1
  1257. bne.s o49cae
  1258. move.w #$0002,72(a0)
  1259. o49cae:
  1260. addq.w #2,50(a0)
  1261. bra.s o49d02
  1262. testpatjmp:
  1263. cmpi.b #$e7,(a1)
  1264. bne.s testnewsustain
  1265. move.b 1(a1),d0
  1266. andi.w #$00ff,d0
  1267. lsl.w #6,d0
  1268. move.l FRQpoint(pc),a1
  1269. adda.w d0,a1
  1270. move.l a1,18(a0)
  1271. move.w d7,50(a0)
  1272. bra.L testeffects
  1273. testnewsustain:
  1274. cmpi.b #$e8,(a1)    ;E8 = set sustain time
  1275. bne.s o49cea
  1276. move.b 1(a1),26(a0)
  1277. addq.w #2,50(a0)
  1278. bra.L testsustain
  1279. o49cea:
  1280. cmpi.b #$e3,(a1)
  1281. bne.s o49d02
  1282. addq.w #3,50(a0)
  1283. move.b 1(a1),27(a0)
  1284. move.b 2(a1),28(a0)
  1285. o49d02:
  1286. move.l 18(a0),a1
  1287. adda.w 50(a0),a1
  1288. move.b (a1),43(a0)
  1289. addq.w #1,50(a0)
  1290. VOLUfx:
  1291. tst.b 25(a0)
  1292. beq.s o49d1e
  1293. subq.b #1,25(a0)
  1294. bra.s o49d70
  1295. o49d1e:
  1296. subq.b #1,23(a0)
  1297. bne.s o49d70
  1298. move.b 24(a0),23(a0)
  1299. o49d2a:
  1300. move.l 10(a0),a1
  1301. adda.w 16(a0),a1
  1302. move.b (a1),d0
  1303. cmpi.b #$e8,d0
  1304. bne.s o49d4a
  1305. addq.w #2,16(a0)
  1306. move.b 1(a1),25(a0)
  1307. bra.s VOLUfx
  1308. o49d4a:
  1309. cmpi.b #$e1,d0
  1310. beq.s o49d70
  1311. cmpi.b #$e0,d0
  1312. bne.s o49d68
  1313. move.b 1(a1),d0
  1314. andi.l #$003f,d0
  1315. subq.b #5,d0
  1316. move.w d0,16(a0)
  1317. bra.s o49d2a
  1318. o49d68:
  1319. move.b (a1),45(a0)
  1320. addq.w #1,16(a0)
  1321. o49d70:
  1322. move.b 43(a0),d0
  1323. bmi.s o49d7e
  1324. add.b 8(a0),d0
  1325. add.b 44(a0),d0
  1326. o49d7e:
  1327. andi.w #$007f,d0
  1328. lea PERIODS(pc),a1
  1329. add.w d0,d0
  1330. move.w d0,d1
  1331. adda.w d0,a1
  1332. move.w (a1),d0
  1333. move.b 46(a0),d7
  1334. tst.b 30(a0)
  1335. beq.s o49d9e
  1336. subq.b #1,30(a0)
  1337.  
  1338. bra.s o49df4
  1339. o49d9e:
  1340. move.b d1,d5
  1341. move.b 28(a0),d4
  1342. add.b d4,d4
  1343. move.b 29(a0),d1
  1344. tst.b d7
  1345. bpl.s o49db4
  1346. btst #0,d7
  1347. bne.s o49dda
  1348. o49db4:
  1349. btst #5,d7
  1350. bne.s o49dc8
  1351. sub.b 27(a0),d1
  1352. bcc.s o49dd6
  1353. bset #5,d7
  1354. moveq #0,d1
  1355. bra.s o49dd6
  1356. o49dc8:
  1357. add.b 27(a0),d1
  1358. cmp.b d4,d1
  1359. bcs.s o49dd6
  1360. bclr #5,d7
  1361. move.b d4,d1
  1362. o49dd6:
  1363. move.b d1,29(a0)
  1364. o49dda:
  1365. lsr.b #1,d4
  1366. sub.b d4,d1
  1367. bcc.s o49de4
  1368. subi.w #$0100,d1
  1369. o49de4:
  1370. addi.b #$a0,d5
  1371. bcs.s o49df2
  1372. o49dea:
  1373. add.w d1,d1
  1374. addi.b #$18,d5
  1375. bcc.s o49dea
  1376. o49df2:
  1377. add.w d1,d0
  1378. o49df4:
  1379. eori.b #$01,d7
  1380. move.b d7,46(a0)
  1381.  
  1382. ; DO THE PORTAMENTO THING
  1383. moveq #0,d1
  1384. move.b 47(a0),d1    ;get portavalue
  1385. beq.s a56d0        ;0=no portamento
  1386. cmpi.b #$1f,d1
  1387. bls.s portaup
  1388. portadown: 
  1389. andi.w #$1f,d1
  1390. neg.w d1
  1391. portaup:
  1392. sub.w d1,56(a0)
  1393. a56d0:
  1394. add.w 56(a0),d0
  1395. o49e3e:
  1396. cmpi.w #$0070,d0
  1397. bhi.s nn1
  1398. move.w #$0071,d0
  1399. nn1:
  1400. cmpi.w #$06b0,d0
  1401. bls.s nn2
  1402. move.w #$06b0,d0
  1403. nn2:
  1404. moveq #0,d1
  1405. move.b 45(a0),d1
  1406. rts
  1407.  
  1408. pervol: blk.b 16,0    ;Periods & Volumes temp. store
  1409. respcnt: dc.w 0        ;Replay speed counter 
  1410. repspd:  dc.w 0        ;Replay speed counter temp
  1411. firseq:     dc.w 0        ;First sequence
  1412. lasseq:     dc.w 0        ;Last sequence
  1413. audtemp: dc.w 0
  1414. spdtemp: dc.w 0
  1415.  
  1416. V1data:  blk.b 64,0    ;Voice 1 data area
  1417. offset1: blk.b 02,0    ;Is added to start of sound
  1418. ssize1:  blk.b 02,0    ;Length of sound
  1419. start1:  blk.b 06,0    ;Start of sound
  1420.  
  1421. V2data:  blk.b 64,0    ;Voice 2 data area
  1422. offset2: blk.b 02,0
  1423. ssize2:  blk.b 02,0
  1424. start2:  blk.b 06,0
  1425.  
  1426. V3data:  blk.b 64,0    ;Voice 3 data area
  1427. offset3: blk.b 02,0
  1428. ssize3:  blk.b 02,0
  1429. start3:  blk.b 06,0
  1430.  
  1431. V4data:  blk.b 64,0    ;Voice 4 data area
  1432. offset4: blk.b 02,0
  1433. ssize4:  blk.b 02,0
  1434. start4:  blk.b 06,0
  1435.  
  1436. o4a0c8: dc.l $00000000,$00100003,$00200006,$00300009
  1437. SEQpoint: dc.l 0
  1438. PATpoint: dc.l 0
  1439. FRQpoint: dc.l 0
  1440. VOLpoint: dc.l 0
  1441.  
  1442. SILENT: dc.w $0100,$0000,$0000,$00e1
  1443.  
  1444. PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  1445.     dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  1446.     dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  1447.     dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  1448.     dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  1449.     dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  1450.     dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  1451.     dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  1452.     dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  1453.     dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  1454.     dc.w $10d0,$0fe0,$0f00,$0e28
  1455.  
  1456. SOUNDINFO:
  1457. ;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w 
  1458.  
  1459. ;Reserved for samples
  1460.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1461.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1462.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1463.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1464.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1465.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1466.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1467.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1468.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1469.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1470. ;Reserved for synth sounds
  1471.     dc.w $0000,$0000 ,$0010 ,$0000 ,$0010 
  1472.     dc.w $0000,$0020 ,$0010 ,$0000 ,$0010 
  1473.     dc.w $0000,$0040 ,$0010 ,$0000 ,$0010 
  1474.     dc.w $0000,$0060 ,$0010 ,$0000 ,$0010 
  1475.     dc.w $0000,$0080 ,$0010 ,$0000 ,$0010 
  1476.     dc.w $0000,$00a0 ,$0010 ,$0000 ,$0010 
  1477.     dc.w $0000,$00c0 ,$0010 ,$0000 ,$0010 
  1478.     dc.w $0000,$00e0 ,$0010 ,$0000 ,$0010 
  1479.     dc.w $0000,$0100 ,$0010 ,$0000 ,$0010 
  1480.     dc.w $0000,$0120 ,$0010 ,$0000 ,$0010 
  1481.     dc.w $0000,$0140 ,$0010 ,$0000 ,$0010 
  1482.     dc.w $0000,$0160 ,$0010 ,$0000 ,$0010 
  1483.     dc.w $0000,$0180 ,$0010 ,$0000 ,$0010 
  1484.     dc.w $0000,$01a0 ,$0010 ,$0000 ,$0010 
  1485.     dc.w $0000,$01c0 ,$0010 ,$0000 ,$0010 
  1486.     dc.w $0000,$01e0 ,$0010 ,$0000 ,$0010 
  1487.     dc.w $0000,$0200 ,$0010 ,$0000 ,$0010 
  1488.     dc.w $0000,$0220 ,$0010 ,$0000 ,$0010 
  1489.     dc.w $0000,$0240 ,$0010 ,$0000 ,$0010 
  1490.     dc.w $0000,$0260 ,$0010 ,$0000 ,$0010 
  1491.     dc.w $0000,$0280 ,$0010 ,$0000 ,$0010 
  1492.     dc.w $0000,$02a0 ,$0010 ,$0000 ,$0010 
  1493.     dc.w $0000,$02c0 ,$0010 ,$0000 ,$0010 
  1494.     dc.w $0000,$02e0 ,$0010 ,$0000 ,$0010 
  1495.     dc.w $0000,$0300 ,$0010 ,$0000 ,$0010 
  1496.     dc.w $0000,$0320 ,$0010 ,$0000 ,$0010 
  1497.     dc.w $0000,$0340 ,$0010 ,$0000 ,$0010 
  1498.     dc.w $0000,$0360 ,$0010 ,$0000 ,$0010 
  1499.     dc.w $0000,$0380 ,$0010 ,$0000 ,$0010 
  1500.     dc.w $0000,$03a0 ,$0010 ,$0000 ,$0010 
  1501.     dc.w $0000,$03c0 ,$0010 ,$0000 ,$0010 
  1502.     dc.w $0000,$03e0 ,$0010 ,$0000 ,$0010 
  1503.     dc.w $0000,$0400 ,$0008 ,$0000 ,$0008 
  1504.     dc.w $0000,$0410 ,$0008 ,$0000 ,$0008 
  1505.     dc.w $0000,$0420 ,$0008 ,$0000 ,$0008 
  1506.     dc.w $0000,$0430 ,$0008 ,$0000 ,$0008 
  1507.     dc.w $0000,$0440 ,$0008 ,$0000 ,$0008
  1508.     dc.w $0000,$0450 ,$0008 ,$0000 ,$0008
  1509.     dc.w $0000,$0460 ,$0008 ,$0000 ,$0008
  1510.     dc.w $0000,$0470 ,$0008 ,$0000 ,$0008
  1511.     dc.w $0000,$0480 ,$0010 ,$0000 ,$0010
  1512.     dc.w $0000,$04a0 ,$0008 ,$0000 ,$0008
  1513.     dc.w $0000,$04b0 ,$0010 ,$0000 ,$0010
  1514.     dc.w $0000,$04d0 ,$0010 ,$0000 ,$0010
  1515.     dc.w $0000,$04f0 ,$0008 ,$0000 ,$0008
  1516.     dc.w $0000,$0500 ,$0008 ,$0000 ,$0008
  1517.     dc.w $0000,$0510 ,$0018 ,$0000 ,$0018
  1518.  
  1519. WAVEFORMS:
  1520. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1521. dc.w $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1522. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1523. dc.w $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1524. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1525. dc.w $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1526. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1527. dc.w $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1528. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1529. dc.w $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1530. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1531. dc.w $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
  1532. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1533. dc.w $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
  1534. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1535. dc.w $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
  1536. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1537. dc.w $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
  1538. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1539. dc.w $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
  1540. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1541. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
  1542. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1543. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
  1544. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1545. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
  1546. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1547. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
  1548. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1549. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
  1550. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1551. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
  1552. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1553. dc.w $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1554. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1555. dc.w $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1556. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1557. dc.w $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1558. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1559. dc.w $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1560. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1561. dc.w $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1562. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1563. dc.w $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1564. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1565. dc.w $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1566. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1567. dc.w $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
  1568. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1569. dc.w $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
  1570. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1571. dc.w $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
  1572. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1573. dc.w $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
  1574. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1575. dc.w $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
  1576. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1577. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
  1578. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1579. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
  1580. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1581. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
  1582. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1583. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
  1584. dc.w $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
  1585. dc.w $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
  1586. dc.w $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1587. dc.w $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1588. dc.w $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1589. dc.w $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1590. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1591. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1592. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1593. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1594. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1595. dc.w $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
  1596. dc.w $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
  1597. dc.w $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
  1598. dc.w $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
  1599. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1600. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1601. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1602. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1603. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1604.  
  1605. MODULE:
  1606. incbin "mod.tristar"    ;*** ici pour changer la zik
  1607.  
  1608.  
  1609. si:
  1610. incbin "sincos"
  1611. cos=si+$200
  1612.  
  1613. det:blk.b 200*nbdata
  1614.  
  1615.  
  1616. font:
  1617. incbin "globulus"
  1618.  
  1619. end:
  1620. fonts:blk.b 3456*2
  1621. scroll=$50000+46
  1622. bp0=$50400
  1623.  
  1624. bp1=$60000
  1625. bp2=$64800
  1626. bp3=$69000
  1627. bp4=$6d800
  1628.